Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.

...powered by www.netzwerkartist.de...

 << zurück
Visual C# 2005 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2005

Visual C# 2005
1.320 S., mit 2 CDs, 59,90 Euro
Galileo Computing
ISBN 3-89842-586-X
gp Kapitel 16 Die wichtigsten Steuerelemente
  gp 16.1 Gemeinsame Eigenschaften, Methoden und Ereignisse
    gp 16.1.1 Größe und Position
    gp 16.1.2 Die Sichtbarkeit und der Aktivierungszustand
    gp 16.1.3 Die Eigenschaft »Text«
    gp 16.1.4 Die Farbeigenschaften
    gp 16.1.5 Grafische Darstellung
    gp 16.1.6 Die »Modifiers«-Eigenschaft
    gp 16.1.7 Die Eigenschaft »Tag«
    gp 16.1.8 Die Größe von Steuerelementen dynamisch der Formgröße anpassen
    gp 16.1.9 Die »Dock«-Eigenschaft
    gp 16.1.10 Die z-Reihenfolge
    gp 16.1.11 Die Tabulatorreihenfolge
    gp 16.1.12 Steuerelemente fokussieren
    gp 16.1.13 Maus- und Tastaturereignisse
  gp 16.2 Schaltflächen der Klasse »Button«
    gp 16.2.1 Die Rahmendarstellung einer Schaltfläche
    gp 16.2.2 Die Eigenschaft »FlatAppearance«
    gp 16.2.3 Beschriftung und Grafiken
    gp 16.2.4 Weitere Gestaltungsmöglichkeiten
  gp 16.3 Auswahlkästchen mit der Klasse »CheckBox«
    gp 16.3.1 Eigenschaften eines Kontrollkästchens
    gp 16.3.2 Checkboxen mit drei Aktivierungszuständen
  gp 16.4 Die Klasse »RadioButton« (Optionsschaltflächen)
    gp 16.4.1 Die Gruppierung der Optionsschaltflächen
    gp 16.4.2 Die Eigenschaften von Optionsschaltflächen
    gp 16.4.3 Den Zustandswechsel programmieren
  gp 16.5 Die »GroupBox« als übergeordneter Container
  gp 16.6 Texteingabefelder mit der Klasse »TextBox«
    gp 16.6.1 Einzeilige Eingabefelder
    gp 16.6.2 Mehrzeilige Eingabefelder
  gp 16.7 Das Steuerelement »RichTextBox«
  gp 16.8 Beschriftungen mit dem Steuerelement »Label«
  gp 16.9 Das »LinkLabel«-Steuerelement
  gp 16.10 Die Anzeige eines Quickinfo-Texts
    gp 16.10.1 Methoden des »ToolTip«-Steuerelements
    gp 16.10.2 Aktivierungsdauer des »QuickInfo«-Steuerelements
    gp 16.10.3 Weitere Eigenschaften
  gp 16.11 Das »ListBox«-Steuerelement
    gp 16.11.1 Die Auflistung »ListBox.ObjectCollection«
    gp 16.11.2 Eigenschaften zur Darstellung einer Listbox
    gp 16.11.3 Einfach- und Mehrfachauswahl der Listenelemente
    gp 16.11.4 Programmatischer Zugriff auf Listboxen mit Einfachauswahl
    gp 16.11.5 Benutzerdefiniertes Sortieren der Listenelemente
    gp 16.11.6 Füllen einer Listbox mit »DataSource«
  gp 16.12 Das Steuerelement »CheckedListBox«
  gp 16.13 Die »ComboBox« (Kombinationslistenfeld)
    gp 16.13.1 Ereignisse eines Kombinationslistenfeldes
    gp 16.13.2 Autovervollständigung in einer »ComboBox«

Kapitel 16 Die wichtigsten Steuerelemente

In diesem Kapitel wollen wir uns ausschließlich den wichtigsten Steuerelementen widmen, die in nahezu jeder Windows-Anwendung zu finden sind. Die anderen Steuerelemente werde ich natürlich nicht ignorieren, sondern in den folgenden Kapiteln vorstellen.


Galileo Computing

16.1 Gemeinsame Eigenschaften, Methoden und Ereignissdowntop

Den Steuerelementen ist gemein, gleichnamige Eigenschaften, Methoden und Ereignisse aufzuweisen, die in ihren Auswirkungen identisch sind und deshalb im Einzelnen nicht bei jedem Steuerelement immer wieder neu vorgestellt werden müssen. Wir starten daher zunächst mit einer allgemeinen Tour durch die gemeinsamen Merkmale, bevor wir uns den einzelnen Controls detailliert zuwenden, um mehr über die jeweiligen Verhaltensweisen zu erfahren.


Galileo Computing

16.1.1 Größe und Position  downtop

Die Größe eines Steuerelements wird durch die Eigenschaft Size vom Typ der Struktur Size beschrieben. Diese hat die für uns wichtigen Eigenschaften Width und Height, die das Einstellen der Breite und Höhe eines Steuerelements ermöglichen. Sie können Width und Height auch direkt auf die Referenz eines Steuerelements im Programmcode aufrufen, allerdings werden diese beiden Eigenschaften im Eigenschaftsfenster nicht angezeigt. Die Anweisung


button1.Size.Width = 100;

ist demnach identisch mit


button1.Width = 100;

Die Position eines Steuerelements wird durch die Position seines linken oberen Eckpunktes relativ zum Ursprungspunkt des Clientbereichs des Containers (hier der Form) beschrieben. Der Positionierung dient die Eigenschaft Location, die vom Typ der Struktur Point ist und die Koordinaten eines Punktes mit den beiden öffentlichen Eigenschaften X und Y beschreibt.


btn.Location = new Point(150, 20);

Wahlweise können Sie auch mit Left und Top die Position festlegen. Left ist der Abstand des Steuerelement-Ursprungspunktes vom linken Rand des Clientbereichs, Top der Abstand vom oberen Rand – immer bezogen auf den Clientbereich der Form, dessen Abmessungen geringer sind als die der Außenabmessungen.

Alternativ kann die Größe und Position in einem Zug mit der Eigenschaft Bounds bestimmt werden, die ebenfalls nicht im Eigenschaftsfenster angezeigt wird. Bounds ist vom Typ Rectangle. Einen der Konstruktoren dieser Klasse möchte ich Ihnen vorstellen:


public Rectangle(int x, int y, int width, int height);

Den Bezeichnern der Parameter kann entnommen werden, welchen Wert der entsprechende Parameter entgegennimmt. Um beispielsweise ein Steuerelement an den Koordinatenpunkt (100, 150) zu positionieren und gleichzeitig eine Breite von 30 und eine Höhe von 15 Einheiten (= Pixel) einzustellen, sieht der Aufruf wie folgt aus:


myControl.Bounds = new Rectangle(100, 150, 30, 15);

Darüber hinaus wird von den Steuerelementen auch die Methode SetBounds bereitgestellt, die dasselbe bewirkt:


myControl.SetBounds(100, 150, 30, 15);

Manche Steuerelemente weisen ähnlich wie die Form einen eigenen Innenbereich auf, deren Innenabmessungen der Eigenschaft ClientSize bzw. ClientRectangle entnommen werden können.


Galileo Computing

16.1.2 Die Sichtbarkeit und der Aktivierungszustand  downtop

Die Eigenschaft Visible steuert die Sichtbarkeit eines Controls und ist vom Typ Boolean. true bedeutet, dass das Steuerelement angezeigt wird, false, dass es nicht sichtbar ist. Das erinnert an die Methoden Show und Hide, die wir im letzten Kapitel im Zusammenhang mit der Anzeige einer Form besprochen haben. Tatsächlich können beide Methoden auch auf Steuerelemente angewendet werden, da sie in Controls definiert sind und an alle ableitenden Klassen vererbt werden, zu denen auch die Steuerelemente gehören.

Sehr ähnlich ist zunächst auch die Eigenschaft Enabled zu bewerten. Ein Steuerelement, das mit der Einstellung false deaktiviert ist, entzieht dem Anwender seine Funktionalität. Um den deaktivierten Zustand zu visualisieren, ändern deaktivierte Steuerelemente ihre Farbdarstellung. Eine deaktivierte Schaltfläche hat beispielsweise eine graue Beschriftung. Funktionell gibt es keinen Unterschied zwischen einem unsichtbaren und einem deaktivierten Steuerelement. Wenn sich der Zustand eines Steuerelements zur Laufzeit der Anwendung ändern kann, sollten Sie Enabled bevorzugen. Damit signalisieren Sie dem Anwender, dass das Steuerelement unter anderen Umständen seinen Dienst anbietet. Ein gutes Beispiel dafür ist die Schaltfläche Übernehmen eines modalen Dialogs. Hat ein Steuerelement hingegen zur Laufzeit grundsätzlich keine Funktionalität, sollte es immer unsichtbar sein. Dabei könnte es sich zum Beispiel um eine Schaltfläche Netzwerk handeln, die nur dann von Interesse ist, wenn der PC auch tatsächlich Netzzugang hat.

Viele Eigenschaften lösen Ereignisse aus, wenn sich der Wert der Eigenschaft ändert. Zu dieser Gruppe gehören auch Enabled und Visible. Die entsprechenden Ereignisse heißen EnabledChanged und VisibleChanged.


Galileo Computing

16.1.3 Die Eigenschaft »Text«  downtop

Die Eigenschaft Text haben wir in den beiden vorangegangenen Kapiteln schon öfters eingesetzt. Sie dient generell dazu, eine Beschriftung anzugeben. Wird ein neues Steuerelement erzeugt, wird dieser Eigenschaft in den meisten Fällen eine Standardzeichenfolge zugewiesen, die dem automatisch zugewiesenen Namen des Steuerelements entspricht.

Mit der Eigenschaft Font des Steuerelements wird die Schriftgröße und die Schriftart der Eigenschaft Text eingestellt. Eine Ausnahme hiervon ist die Beschriftung der Titelleiste eines Formulars. Viele Steuerelemente stellen darüber hinaus auch mit TextAlign eine Eigenschaft bereit, um den Text auszurichten.


Galileo Computing

16.1.4 Die Farbeigenschaften  downtop

Die Farben werden mit den Eigenschaften BackColor und ForeColor eingestellt. BackColor legt dabei die Hintergrundfarbe fest, ForeColor die Vordergrundfarbe. Die Vordergrundfarbe beeinflusst die Farbe eines Textes, beispielsweise wenn Sie in einer Form mit der Methode DrawString eine Zeichenfolge ausgeben lassen.

Farbeigenschaften sind vom Typ Color, in dem 140 Farbkonstanten vordefiniert sind. Wollen Sie die von Windows standardmäßig benutzten Farben einsetzen, können Sie auf die Mitglieder der Klasse System.Drawing.SystemColors zurückgreifen.


Galileo Computing

16.1.5 Grafische Darstellung  downtop

Die Eigenschaft Image eines Steuerelements ermöglicht die Anzeige eines Bildes im Steuerelement. Ein Image kann sowohl ein Bitmap als auch ein Icon oder eine Metadatei sein. Allerdings haben nicht alle Steuerelemente diese Eigenschaft. Häufig wird darüber hinaus auch die Eigenschaft ImageAlign angeboten, damit das Bildchen ausgerichtet werden kann.

Die sehr ähnliche Eigenschaft BackGroundImage zeigt ein Bild hintergrundfüllend an. Dazu wird das Bild sich periodisch wiederholend dargestellt.

Ereignisse zur grafischen Darstellung

Ähnlich wie in einem Formular kann auch in einigen Steuerelementen mit grafischen Methoden gezeichnet werden. Solche Steuerelemente lösen das Ereignis Paint aus, dessen PaintEventArgs-Objekt die Referenz auf ein Graphics-Objekt bereitstellt. In Kapitel 22 werden wir uns mit den grafischen Operationen beschäftigen.


Galileo Computing

16.1.6 Die »Modifiers«-Eigenschaft  downtop

Erzeugen Sie mit dem Windows Forms-Designer ein Steuerelement, wird in der Klassendefinition des Formulars und in der Initialisierungsroutine der Code erzeugt, der das Steuerelement mit seinen Eigenschaftseinstellungen, Ereignishandlern usw. beschreibt. Aus objektorientierter Sicht sind Steuerelemente nicht anderes als Felder der Formularklasse. Standardmäßig ist der Zugriffsmodifizierer private. Deshalb hat auch nur der Code in der Form Zugriff auf das Steuerelement.

Wollen Sie den Zugriff auf ein Steuerelement aus einer anderen Form heraus gewährleisten (beispielsweise um den Inhalt einer Textbox lesen zu können), muss ein anderer Zugriffsmodifizierer gewählt werden. Im Eigenschaftsfenster können Sie diesen mit der Eigenschaft Modifiers (die allerdings keine Eigenschaft, sondern nur eine Option der Entwicklungsumgebung ist) nach eigenem Ermessen festlegen. Angeboten werden dazu public, protected, internal, protected internal und private.


Galileo Computing

16.1.7 Die Eigenschaft »Tag«  downtop

Die Eigenschaft Tag dient allgemeinen Zwecken. Sie können ihr einen beliebigen Wert zuweisen, denn Tag ist vom Typ Object – zumindest solange Sie Tag im Programmcode einen Wert zuweisen. Ein Eintrag im Eigenschaftsfenster wird als string interpretiert.

Mit der Wertzuweisung ist keine bestimmte Aktion und auch kein bestimmtes Verhalten verbunden. Sie müssen im Programmcode selbst für die gewünschte Interpretation sorgen. Damit ist Tag nur ein »dummes« Feld, das auf Klassenebene deklariert ist.


Galileo Computing

16.1.8 Die Größe von Steuerelementen dynamisch der Formgröße anpassen  downtop

Alle Steuerelemente zeigen identisches Verhalten, wenn die Größe des Fensters zur Laufzeit verändert wird: Ausgehend vom linken oberen Punkt des Formulars behalten sie ihre Größe und Position bei. Ein Vergrößern der Form führt daher im rechten und unteren Teil zu einem steuerelementfreien Bereich. Bei eine Verkleinerung hingegen sind die rechts außen oder unten stehenden Steuerelemente möglicherweise nicht mehr sichtbar – ein hässlicher Effekt.

Zuweilen ist es sinnvoll, wenn sich die Größe der Steuerelemente dynamisch der Größe der Form anpassen und ihre relative Position innerhalb der Form erhalten bleibt. Realisieren lässt sich eine solche Forderung mit der Eigenschaft Anchor:


public virtual AnchorStyles Anchor {get; set;}

Anchor ist vom Typ der Enumeration AnchorStyles, die insgesamt fünf Werte beschreibt, mit denen ein Steuerelement am Rand seines Containers verankert werden kann. Verankert heißt, dass bei einer Größenänderung der Form der Abstand zwischen Formular und Form konstant bleibt.


Tabelle 16.1   Die Enumeration »AnchorStyles«

Member Beschreibung
None Das Steuerelement ist an keinem Rand verankert.
Top Das Steuerelement ist am oberen Rand verankert.
Bottom Das Steuerelement ist am unteren Rand verankert.
Left Das Steuerelement ist am linken Rand verankert.
Right Das Steuerelement ist am rechten Rand verankert.

AnchorStyles verfügt über das Attribut [Flags]. Die einzelnen Konstanten der Enumeration können daher bitweise kombiniert werden. Die Standardeinstellung ist auf diese Weise mit


button1.Anchor = AnchorStyles.Left | AnchorStyles.Top;

beschrieben und legt einen konstanten Abstand zum linken und zum oberen Rand des Formulars fest. Wenn Sie AnchorStyles-Werte den einem Steuerelement gegenüberliegenden Seiten angeben, z.B.


button1.Anchor = AnchorStyles.Left | AnchorStyles.Right;

bleibt der Abstand zum linken und rechten Rand der Form erhalten und führt zu einer Breitenänderung des Steuerelements, während die Höhe des Steuerelements konstant bleibt.

Stellen Sie Anchor eines Steuerelements im Eigenschaftsfenster ein, können Sie die Konstanten entweder manuell eintragen oder über die Schaltfläche mit dem Pfeil nach unten ein kleines Hilfsfenster öffnen (siehe Abbildung 16.1). In diesem markieren Sie die Abstände, die zum Rahmen des Containers konstant bleiben sollen. In der Abbildung handelt es sich um den Abstand zum oberen und unteren Rand der Form.

Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 16.1   Das Einstellen der Eigenschaft »Anchor«


Galileo Computing

16.1.9 Die »Dock«-Eigenschafdowntop

Jedes Steuerelement befindet sich in einem Container und kann dort beliebig positioniert werden. Manchmal ist es allerdings wünschenswert, dass Steuerelemente bündig am Rand ihres Containers ausgerichtet. Denken Sie in diesem Zusammenhang nur an MS Notepad oder an den Explorer. In Notepad passt sich das Textsteuerelement den Rändern der Form automatisch an. Im Explorer sind den Teilfenstern so Bereiche zugeordnet, dass bei einer Größenänderung der Form oder einer Neuaufteilung des Clientbereichs das linke Teilfenster eine konstante Breite hat.

Mit der Eigenschaft Dock können Sie dieses Verhalten auch festlegen, ohne zur Laufzeit Berechnungen anstellen zu müssen. Legen Sie einfach nur fest, an welcher Seite des Containers das Steuerelement angedockt werden soll. Neben None, was auch der Standard ist, stehen Ihnen noch weitere fünf Möglichkeiten zur Verfügung: Left, Right, Top, Bottom und Fill. Mit der letztgenannten Einstellung wird das Steuerelement an allen vier Rändern des Containers ausgerichtet. Das würden Sie beispielsweise machen, wenn Sie eine Form als Dokumentenfenster dient.


Galileo Computing

16.1.10 Die z-Reihenfolge  downtop

Nehmen wir an, eine Form würde zwei Schaltflächen beherbergen, die unterschiedliche Anchor-Eigenschaftseinstellungen aufweisen. Die Einstellung könnte so unglücklich gewählt sein, dass bei einer Größenveränderung der Form eine Schaltfläche die andere vollständig überdeckt. Wenn beide Schaltflächen auf das Click-Ereignis reagieren – und davon kann man bei einem Button ausgehen –, wird das Klicken niemals den Ereignishandler der verdeckten Schaltfläche erreichen, sondern immer den der obersten, sichtbaren Schaltfläche.

Ursache dieses Phänomens ist die z-Order, auch als z-Reihenfolge bezeichnet. Die z-Order wirkt sich auf überlappende Steuerelemente eines gemeinsamen Containers wie der Form aus. Der Begriff z-Order ist dem Koordinatensystem entnommen. Während die x- und die y-Achse die horizontale bzw. vertikale Richtung beschreiben, steht die z-Achse senkrecht zu beiden.

Die z-Reihenfolge wird durch den Container festgelegt, in dem sich die Steuerelemente befinden. Überlappen sich zwei Steuerelemente, wird das angezeigt, das sich in der z-Reihenfolge an einer höheren Position befindet. Ausschlaggebend für die z-Reihenfolge ist die Position der Steuerelemente in der Auflistung Control.ControlCollection, die durch die Eigenschaft Controls beschrieben wird (siehe dazu auch Kapitel 15). Das Element mit dem Index 0 in ControlCollection steht an oberster Position der z-Reihenfolge, das mit dem Index 1 an zweiter Position, usw.

Die z-Reihenfolge kann nur mittels Programmcode geändert werden. Die Methode, die ein Steuerelement an die oberste Position der z-Reihenfolge bringt, ist die Methode BringToFront.

Angenommen, die Schaltfläche button1 befindet sich an unterster Stelle in der z-Reihenfolge und wird durch die Schaltfläche button2 verdeckt. Die Anweisung


button1.BringToFront();

stellt das Element button1 an den Anfang der z-Reihenfolge. Rein äußerlich ist das daran zu erkennen, dass der vorher verdeckte button1 sichtbar und für den Mausklick erreichbar wird – der dem Click-Ereignis zugeordnete Ereignishandler wird ausgeführt.

Die Methode SendToBack kehrt die Funktionalität von BringToFront um: Das Steuerelement, auf dem diese Methode aufgerufen wird, wird an die unterste Stelle der z-Reihenfolge gestellt.


Galileo Computing

16.1.11 Die Tabulatorreihenfolge  downtop

Alle fokussierbaren Steuerelemente können mit der (ÿ)-Taste der Reihe nach aktiviert werden. Dabei sollten Sie sich an die folgende übliche Konvention halten: Nach dem Öffnen und Anzeigen einer Form werden zuerst die Steuerelemente aktiviert, die eine Eingabe vom Anwender erwarten, anschließend die Schaltflächen. Innerhalb dieser beiden Gruppen gilt die Aktivierungsreihenfolge zuerst von links nach rechts, danach von oben nach unten.

Entwickeln Sie die grafische Benutzerschnittstelle mit dem Windows Forms-Designer, wird die Fokussierreihenfolge durch die Reihenfolge bestimmt, mit der Sie die Steuerelemente aus der Toolbox in die Form ziehen. Das zuerst gezeichnete Steuerelement wird demnach das Steuerelement sein, das nach dem Start der Anwendung den Eingabefokus erhält.

Da nur in wenigen Fällen die Fokussierreihenfolge nach Fertigstellung des Fensterlayouts der entsprechen wird, die dem Benutzer angeboten werden soll, lässt sich die Fokussierreihenfolge mit der Eigenschaft TabIndex festlegen. Das Steuerelement, dessen TabIndex-Eigenschaft den Wert 0 hat, wird nach dem Laden und Anzeigen einer Form den Fokus erhalten, nach dem Betätigen der (ÿ)-Taste das Steuerelement mit der TabIndex-Einstellung 1 usw.


Galileo Computing

16.1.12 Steuerelemente fokussieren  downtop

Wollen Sie ein bestimmtes Steuerelement mittels Programmcode fokussieren, müssen Sie auf der Referenz des Steuerelements die Methode Focus aufrufen, z.B.:


textBox1.Focus();

Um zu überprüfen, ob das Steuerelement auch wirklich den Fokus erhalten hat, können Sie den Rückgabewert der Methode auswerten. Er ist true, wenn das angegebene Steuerelement den Fokus erhalten hat, ansonsten false. Eine zweite Möglichkeit, den Eingabefokus zu setzen, bietet sich mit der Methode Select, die jedoch keinen Rückgabewert liefert. Mit den beiden schreibgeschützten Eigenschaften ContainFocus oder Focused lässt sich prüfen, ob ein Steuerelement oder die Form bzw. eines der ihr untergeordneten Steuerelemente den Eingabefokus hat.

Es gibt ein paar Steuerelemente, die nicht fokussiert werden können, beispielsweise Panel, Label und PictureBox. Wegen der Vererbung haben auch diese die Eigenschaft TabIndex, die zur Laufzeit jedoch ignoriert wird. In der Fokussierreihenfolge wird dann das folgende Steuerelement aktiviert. Ob ein Element fokussierbar ist, kann mit der Eigenschaft CanFocus überprüft werden.

Fokuswechsel mit der »Alt«-Taste

Häufig sind in Windows-Fenstern Steuerelemente zu finden, die in ihrer Beschriftung einen unterstrichenen Buchstaben aufweisen. Diese Kennzeichnung dient dem Anwender als optischer Hinweis, dass er mit der Tastenkombination (Alt) + <unterstrichener Buchstabe> den Fokus auf das entsprechende Steuerelement setzen kann.

Um dieses Verhalten zu erreichen, müssen Sie vor dem betreffenden Buchstaben nur das »&«-Zeichen in der Text-Eigenschaft eintragen. Müssen Sie innerhalb der Beschriftung ein »&«-Zeichen anzeigen, geben Sie das Zeichen zweimal hintereinander an.

Die Eigenschaften »TabStop« und »ProcessTabKey«

Ein Steuerelement kann mit TabStop=false aus der Fokussierreihenfolge herausgenommen werden. Wechselt der Anwender mit der (Tab)-Taste zu diesem Steuerelement, leitet es den Fokus sofort an das nächste in der Fokussierreihenfolge stehende Steuerelement weiter.

Die Methode ProcessTabKey der Form aktiviert das in der Tabulatorreihenfolge nächste Steuerelement. Die Methode erwartet ein Argument, mit dem festgelegt wird, ob die Tabulatorreihenfolge vorwärts (= true) oder rückwärts (= false) durchlaufen werden soll.

Die Ereignisse beim Fokuswechsel

Beim Fokuswechsel spielen immer zwei Steuerelemente eine Rolle: das Steuerelement, das den Fokus verliert, und das Steuerelement, das den Fokus erhält. In diesem Szenario sind sechs Ereignisse interessant:

gp  Enter wird beim Eintreten in den Bereich des Steuerelements ausgelöst.
gp  GotFocus tritt auf, wenn ein Steuerelement den Fokus erhält.
gp  Leave wird ausgelöst, wenn der Eingabefokus das Steuerelement verlässt.
gp  LostFocus wird ausgelöst, wenn das Steuerelement den Fokus verliert.
gp  Validating tritt auf, während das Steuerelement eine Überprüfung durchführt.
gp  Validated tritt nach dem Beenden der Überprüfung auf.

Enter und GotFocus treten bei dem Steuerelement auf, das den Eingabefokus erhält, alle anderen bei dem, das den Eingabefokus abgibt. Die beiden Ereignisse Validating und Validated setzen darüber hinaus voraus, dass die Eigenschaft CausesValidation des fokusabgebenden Steuerelements auf true eingestellt ist. Mehr darüber lesen Sie weiter unten.

Entscheidend für die Reihenfolge der Ereignisse ist, auf welche Art und Weise der Fokuswechsel erfolgt. Der Fokuswechsel mit der Maus oder durch Aufruf von Focus führt zur folgenden Ereignisreihenfolge:

gp  Enter
gp  GotFocus
gp  LostFocus
gp  Leave
gp  Validating
gp  Validated

Ein wenig anders ist die Reihenfolge, wenn dem Fokuswechsel die Tastatur oder der Aufruf der Methode Select zugrunde liegt.

gp  Enter
gp  GotFocus
gp  Leave
gp  Validating
gp  Validated
gp  LostFocus

Auf die Implementierung von GotFocus und LostFocus sollten Sie ganz verzichten und stattdessen den erforderlichen Code in Enter und Leave schreiben.

Validierung von Benutzereingaben

Das Ereignis Validating dient dazu, eine Überprüfung des Controls vor dem Fokuswechsel vorzunehmen. Bei einer Textbox könnte das beispielsweise der Inhalt der Eigenschaft Text sein. Hat sie einen unzulässigen Inhalt, lässt sich in Validating der Fokuswechsel unterbinden. Dazu übergibt das Ereignis dem Ereignishandler ein Objekt vom Typ CancelEventArgs, dessen Eigenschaft Cancel auf true zu setzen ist.

Im folgenden Codefragment wird der Inhalt der Textbox textBox1 überprüft. Ist sie leer, wird der Fokus nicht an das nächste in der Fokussierreihenfolge stehende Steuerelement weitergegeben:


private void textBox1_Validating(object sender, CancelEventArgs e) {
  if (textBox1.Text.Length == 0)
      e.Cancel = true;
}

Hat das Steuerelement die Prüfung positiv abgeschlossen, wird Validated ausgelöst.

Eine Bedingung ist mit der Auslösung der beiden Ereignisse Validating und Validated verbunden: Die Eigenschaft CausesValidation des zu überprüfenden Steuerelements muss true (Standardeinstellung) sein. false unterdrückt die Gültigkeitsüberprüfung.


Galileo Computing

16.1.13 Maus- und Tastaturereignisse  toptop

Die meisten Steuerelemente reagieren auf Maus- und Tastaturereignisse. Das vermutlich wichtigste Mausereignis dürfte das Ereignis Click sein, das ausgelöst wird, wenn der Anwender zur Laufzeit ein Steuerelement anklickt. Sehr ähnlich ist das Ereignis DoubleClick, das auf die schnelle Abfolge zweier Mausklicks reagiert. Das Click-Ereignis wird übrigens auch dann ausgelöst, wenn auf ein Steuerelement doppelt geklickt wird. In den meisten Fällen werden Sie sich daher entscheiden müssen, welches der beiden Ereignisse zu codieren wollen.

Mit dem .NET Framework 2.0 werden zwei weitere Click-Ereignisse eingeführt, die eine weitere Verfeinerung des Verhaltens der Komponenten ermöglichen: MouseClick und MouseDoubleClick. Während Click und DoubleClick keine ereignisspezifischen Informationen an den Ereignishandler weiterleiten, können Sie über die neuen Ereignisse unter anderem die Koordinaten des Mauszeigers beim Klicken auf eine Komponente ermitteln.

 << zurück
  
  Zum Katalog
Zum Katalog: Visual C# 2005
Visual C# 2005
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Fortgeschrittene Programmierung mit Visual C# 2005






 Fortgeschrittene
 Programmierung
 mit Visual C# 2005


Zum Katalog: Einstieg in Visual C# 2005






 Einstieg in
 Visual C# 2005


Zum Katalog: Einstieg in Visual Basic 2005






 Einstieg in
 Visual Basic 2005


Zum Katalog: Visual Basic 2005






 Visual Basic 2005


Zum Katalog: Java ist auch eine Insel






 Java ist auch eine
 Insel


Zum Katalog: Konzepte und Lösungen für Microsoft-Netzwerke






 Konzepte und
 Lösungen für
 Microsoft-Netzwerke


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo








Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de